package com.mtoolkit.socket.server;

import com.mtoolkit.socket.SocketRequest;
import com.mtoolkit.socket.SocketResponse;

/**
 * 服务器事件监听器接口。
 */
public interface NioServerEventListener {

	/**
     * 当有客户端发来请求时触发本事件。
     * @throws Exception 异常。
     */
    public void onAccept();

    /**
     * 当服务端接受客户端请求后触发本事件。
     * @param request 客户端请求。
     * @throws Exception 异常。
     */
    public void onAccepted(SocketRequest request);
    
    /**
     * 当客户端发来数据，并已被服务器控制线程正确读取时，触发该事件。
     * @param request 客户端请求。
     * @throws Exception 异常。
     */
    public void onReaded(SocketRequest request);
    
    /**
     * 当可以向客户端发送请求触发本事件。
     * @param request 客户端请求。
     * @param response 响应。
     * @throws Exception 异常。
     */
    public void onWrite(SocketRequest request, SocketResponse response);
    
    /**
     * 当客户端与服务器结束连接后触发本事件。
     * @param request 客户端请求。
     * @throws Exception 异常。
     */
    public void onClosed(SocketRequest request);
    
    /**
     * 服务器端处理产生错误时触发本事件。
     * @param exception 错误信息。
     */
    public void onError(Exception exception);
    
}
